package pms.om;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.JoinColumn;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "tbl_mitarbeiter")

public class Mitarbeiter {

	@Id
	@GeneratedValue
	@Column(name = "pk_mitarbeiter")  // Primärschlüssel Mitarbeiter
	private int id;
	private String personalnummer;
	private String anrede;
	private String vorname;
	private String nachname;
	private String aufgabe_position;
	private Date geburtsdatum;
	private Date eintrittsdatum;
	private Date austrittsdatum;
	private String e_mail_adresse;
	private String telefon;
	private String faxnummer;
	private String passwort;
	
	// Kardinalitäten

	@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.EAGER)	
	@JoinColumn(name="fk_mitarbeiter", nullable = false)
	private Set<Urlaubsanspruch> urlaubsanspruechedesmitarbeiters;

	@OneToMany(mappedBy = "mitarbeiterabwesend", fetch = FetchType.EAGER)
	private Set<MitarbeiterAbwesend> abwesenheitendesmitarbeiters;
	
	@ManyToMany(mappedBy = "mitarbeiterinabteilung", fetch = FetchType.EAGER)
	private Set<Abteilung> abteilungendesmitarbeiters;
	
    @Override
    public boolean equals(Object o) {
    	return id == ((Mitarbeiter) o).getId();
    }
   	
	// Konstruktoren
    public Mitarbeiter() {
    	this.personalnummer = "";
    	this.anrede = "";
    	this.vorname = "";
    	this.nachname = "";
    	this.aufgabe_position = "";
    	this.geburtsdatum = null;
    	this.eintrittsdatum = null;
    	this.austrittsdatum = null;
    	this.e_mail_adresse = "";
    	this.telefon = "";
    	this.faxnummer = "";
    	this.passwort = "";
    }
	
    public Mitarbeiter(String personalnummer, String anrede,
		               String vorname, String nachname, String aufgabe_position,
				       Date geburtsdatum, Date eintrittsdatum, Date austrittsdatum,
				       String e_mail_adresse, String telefon, String faxnummer,
				       String passwort) {
		this.personalnummer = personalnummer;
		this.anrede = anrede;
		this.vorname = vorname;
		this.nachname = nachname;
		this.aufgabe_position = aufgabe_position;
		this.geburtsdatum = geburtsdatum;
		this.eintrittsdatum = eintrittsdatum;
		this.austrittsdatum = austrittsdatum;
		this.e_mail_adresse = e_mail_adresse;
		this.telefon = telefon;
		this.faxnummer = faxnummer;
		this.passwort = passwort;
	}
		
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getAnrede() {
		return anrede;
	}
	public void setAnrede(String anrede) {
		this.anrede = anrede;
	}
	public String getVorname() {
		return vorname;
	}
	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	public String getNachname() {
		return nachname;
	}
	public void setNachname(String nachname) {
		this.nachname = nachname;
	}
	public String getAufgabe_position() {
		return aufgabe_position;
	}
	public void setAufgabe_position(String aufgabe_position) {
		this.aufgabe_position = aufgabe_position;
	}
	public Date getGeburtsdatum() {
		return geburtsdatum;
	}
	public void setGeburtsdatum(Date geburtsdatum) {
		this.geburtsdatum = geburtsdatum;
	}
	public Date getEintrittsdatum() {
		return eintrittsdatum;
	}
	public void setEintrittsdatum(Date eintrittsdatum) {
		this.eintrittsdatum = eintrittsdatum;
	}
	public Date getAustrittsdatum() {
		return austrittsdatum;
	}
	public void setAustrittsdatum(Date austrittsdatum) {
		this.austrittsdatum = austrittsdatum;
	}
	public String getE_mail_adresse() {
		return e_mail_adresse;
	}
	public void setE_mail_adresse(String e_mail_adresse) {
		this.e_mail_adresse = e_mail_adresse;
	}
	public String getTelefon() {
		return telefon;
	}
	public void setTelefon(String telefon) {
		this.telefon = telefon;
	}
	public String getFaxnummer() {
		return faxnummer;
	}
	public void setFaxnummer(String faxnummer) {
		this.faxnummer = faxnummer;
	}
	public String getPasswort() {
		return passwort;
	}
	public void setPasswort(String passwort) {
		this.passwort = passwort;
	}
	public String getPersonalnummer() {
		return personalnummer;
	}
	public void setPersonalnummer(String personalnummer) {
		this.personalnummer = personalnummer;
	}

	public Set<Urlaubsanspruch> getUrlaubsanspruechedesmitarbeiters() {
		return urlaubsanspruechedesmitarbeiters;
	}

	public void setUrlaubsanspruechedesmitarbeiters(
			Set<Urlaubsanspruch> urlaubsanspruechedesmitarbeiters) {
		this.urlaubsanspruechedesmitarbeiters = urlaubsanspruechedesmitarbeiters;
		
	}

	public Set<MitarbeiterAbwesend> getAbwesenheitendesmitarbeiters() {
		return abwesenheitendesmitarbeiters;
	}

	public void setAbwesenheitendesmitarbeiters(
			Set<MitarbeiterAbwesend> abwesenheitendesmitarbeiters) {
		this.abwesenheitendesmitarbeiters = abwesenheitendesmitarbeiters;
	}

	public Set<Abteilung> getAbteilungendesmitarbeiters() {
		return abteilungendesmitarbeiters;
	}

	public void setAbteilungendesmitarbeiters(
			Set<Abteilung> abteilungendesmitarbeiters) {
		this.abteilungendesmitarbeiters = abteilungendesmitarbeiters;
	}
	
}
